package srv;

import java.util.ArrayList;
import java.util.List;

import beans.ItemRemitoBean;
import beans.RemitoBean;
import beans.RodamientoBean;
import dao.HibernateRemitoBeanDAO;
import entities.ItemRemitoEntity;
import entities.ListaPreciosEntity;
import entities.RemitoEntity;
import entities.RodamientoEntity;

public class RemitoSRV 
{
	private static HibernateRemitoBeanDAO dao;
	private static RemitoSRV instancia;
	
	static {
			dao = HibernateRemitoBeanDAO.getInstancia();
			}
	
	public static RemitoSRV getInstancia()
	{
		if (instancia == null)
		{
			instancia = new RemitoSRV();
		}
		return instancia;
	}
	
	public RemitoEntity pasadoDesdeBean( RemitoBean remitoBean )
	{
		RemitoEntity remito = new RemitoEntity();
		
		remito.setDescripcion( remitoBean.getDescripcion());
		remito.setId( remitoBean.getId());
		
		List<ItemRemitoEntity> items = new ArrayList<ItemRemitoEntity>();
		for( ItemRemitoBean itemBean : remitoBean.getItems())
		{
			ItemRemitoEntity item = new ItemRemitoEntity();
			item.setCantidad( itemBean.getCantidad());
			
			item.setPrecio( itemBean.getPrecio());
			
			RodamientoEntity rodamiento = RodamientoSRV.getInstancia().pasadoDesdeBean( itemBean.getRodamiento());
			item.setRodamiento(rodamiento);
			
			items.add(item);
		}
		
		return remito;
	}
	
	public RemitoBean pasadoDesdeEntity( RemitoEntity remitoEntity )
	{
		RemitoBean remito = new RemitoBean();
		
		remito.setDescripcion( remitoEntity.getDescripcion());
		remito.setId( remitoEntity.getId());
		
		List<ItemRemitoBean> items = new ArrayList<ItemRemitoBean>();
		for( ItemRemitoEntity itemEntity : remitoEntity.getItems())
		{
			ItemRemitoBean item = new ItemRemitoBean();
			item.setCantidad( itemEntity.getCantidad());
			
			item.setPrecio( itemEntity.getPrecio());
			
			RodamientoBean rodamiento = RodamientoSRV.getInstancia().pasadoDesdeEntity( itemEntity.getRodamiento());
			item.setRodamiento(rodamiento);
			
			items.add(item);
		}
		
		return remito;
	}
	
	public void grabarRemito( RemitoBean nuevoRemito )
	{
		RemitoEntity r = this.pasadoDesdeBean( nuevoRemito );
		dao.grabarRemito( r );
	}
}
